import { searchGoodList } from '@/api' // 配置好axios的大项目
// home模块的仓库
const state = {
  goodsList: null
}

// mutions是唯一修改state的地方
const mutations = {
  GETCATEGORYLIST (state, categoryList) {
    state.goodsList = categoryList
  }
}

// action|用户处理派发action地方的，可以书写异步语句、自己逻辑地方
const actions = {
  async getCategoryList ({ commit }, val) {
    const result = await searchGoodList(val)
    if (result.meta.status === 200) {
      commit('GETCATEGORYLIST', result.data)
    }
  }

  // #region  对于类属于增删改不需要写三联环
  /* // 加入购物车的||修改某一个产品的个数,传入的参数为解构赋值写法
  async addOrUpdateShopCart ({ commit }, { skuId, skuNum }) {
    // 发请求:前端带一些参数给服务器【需要存储这些数据】，存储成功了，没有给返回数据
    // 不需要在三连环（仓库存储数据了）
    // 注意:async函数执行返回的结果一定是一个promise【要么成功，要么失败】
    const result = await reqgetCategoryList(skuId, skuNum)
    if (result.code === 200) {
      // 返回的是成功的标记
      return 'ok'
    } else {
      // 返回的是失败的标记
      return Promise.reject(new Error('faile'))
    }
  } */
  // #endregion
}

// 计算属性
// 项目当中getters主要的作用是:简化仓库中的数据(简化数据而生)
const getters = {
  firstPersonName (state) {
    // 假如网络不给力|没有网state.searchList.goodList应该返回的是undefined
    return state.goodsList || {}
  }
}

export default {
  namespaced: true, // 开启命名空间，不要漏了
  state,
  mutations,
  actions,
  getters
}
